//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Project:			None
//
// Module Name:		CImageControl.h
//
// Environment:		Windows XX, Visual C++
//
// Description:		Create control to view any type of Images 		
//
// Title End
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
//	History:
//		2013.05.25	Tran Dang Bao		v01		Create New
//
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma once
#ifndef _CImageControl_H_
#define _CImageControl_H_

#include "stdafx.h"
//#include "afxwin.h"

class CImageControl : public CStatic
{
private:
	int m_nImageHeight;		// Image Height
	int m_nImageWidth;		// Image Width
	int m_nID;				// ID of control
	CString m_strImageName; // Name of Image
	//GDI Plus Token
	ULONG_PTR m_gdiplusToken;
	//Control flag if a pic is loaded
	BOOL m_bIsPicLoaded;
	//Internal image stream buffer
	IStream* m_pStream;

	// BaoTD1 - Add variable to check Mouse Move or Mouse Leave
	bool m_bMouseMoveOnWnd;
    // TamNV2 - Add set color for image
    bool m_bSelected;       // flag set image is selected or non-selected
    bool m_bHover;
    CWnd* m_pCWndParaent;   // Parent control of ImageControl, this is CViewImageControl;
    int m_nIndex;

private:
	void DrawRectangleSolid();
public:
	CImageControl(void);
	~CImageControl(void);

	void SetImageHeight( int ImageHeight );
	void SetImageWidth( int ImageWidth );
	int  GetImageHeight();
	int  GetImageWidth();

	BOOL CreateImageFromFile(CString &szFilePath);
public:  // public string folder
	//Draws the Control
	virtual void PreSubclassWindow();
	virtual void DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct);
	virtual BOOL OnEraseBkgnd(CDC* pDC);

	DECLARE_MESSAGE_MAP()
	afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
    afx_msg void OnMouseMove(UINT nFlags, CPoint point);

	//	void LoadViewImage( CString pathFolderImage );
   // CString m_strPathFolderImage;

public:
    // TamNV2 - Add some get, set functions
    void SetSelectedValue(bool bSelected);
    bool GetSelectedValue();

    void SetHoverValue(bool bHover);
    bool GetHoverValue();

    void SetIndex(int nIndex);
    int GetIndex();

    CString GetImageName();
};

#endif

// BOOL CPictureCtrl::LoadFromResource(HMODULE hModule, LPCTSTR lpName, LPCTSTR lpType)
// {
// 	//Set success error state
// 	SetLastError(ERROR_SUCCESS);
// 	FreeData();
// 
// 	//Locate the resource
// 	HRSRC hResource = FindResource(hModule, lpName, lpType);
// 	if(hResource == NULL)
// 	{
// 		return FALSE;
// 	}
// 
// 	//Get the size of the resource
// 	DWORD dwResourceSize = SizeofResource(hModule, hResource);
// 	if(dwResourceSize == 0)
// 	{
// 		return FALSE;
// 	}
// 
// 	//Load the Resource
// 	HGLOBAL hGlobalResource = LoadResource(hModule, hResource);
// 	if(hGlobalResource == NULL)
// 	{
// 		return FALSE;
// 	}
// 
// 	//Lock the resource and get the read pointer
// 	BYTE* pRecource = (BYTE*)LockResource(hGlobalResource);
// 	if(pRecource == NULL)
// 	{
// 		return FALSE;
// 	}
// 
// 	//Allocate the Stream
// 	DWORD dwResult =  CreateStreamOnHGlobal(NULL, TRUE, &m_pStream);
// 	if(dwResult != S_OK)
// 	{
// 		FreeResource(hGlobalResource);
// 		SetLastError(dwResult);
// 		pRecource = NULL;
// 		return FALSE;
// 	}
// 
// 	//Copy the resource data to the stream
// 	dwResult = m_pStream->Write(pRecource, dwResourceSize, NULL);
// 	if(dwResult != S_OK)
// 	{
// 		FreeResource(hGlobalResource);
// 		SAFE_RELEASE(m_pStream);
// 		SetLastError(dwResult);
// 		return FALSE;		
// 	}
// 
// 	//Tidy up
// //	FreeResource(hGlobalResource);
// 	
// 	//Mark as loaded
// 	m_bIsPicLoaded = TRUE;
// 
// 	Invalidate();
// 	RedrawWindow();
// 
// 	return TRUE;
// }

//Overload - Single load function
//BOOL CPictureCtrl::Load(CString &szFilePath)
//{
//	return LoadFromFile(szFilePath);
//}